package com.example.demosdk;

import com.sun.jna.Callback;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import com.sun.jna.platform.win32.WinDef;
import com.sun.jna.win32.StdCallLibrary;


public interface DLSDK extends StdCallLibrary {
    Pointer DM_Init();
    //      引入的窗口句柄属性和*ip属性,const是对ip这一值进行限定，当创建之后，就不能进行改变，char *IPAddr是指合法规定的ipv4地址
//      const char* 对应string，hwnd是一个带有int类型的结构体指针,先把它当作一个lang型,这里就需要java与c++里面的数据类型进行对应了
    /* 结构体B定义 */
    int DM_Connect(WinDef.HWND hwnd, String IPAddr, int Port);
    int DM_CheckOnline(String IPAddr,int Port);


    int DM_SetArea(int handle, int iArea, int x1, int y1, int x2, int y2, int Emiss, int MeasureType);
    int DM_GetTemp (int handle,int Mode );
    int DM_Disconnect(WinDef.HWND handle);
    int DM_SetSpot(int handle,int iPoint,int x,int y,int Emiss);
    int DM_GetSpotTemp(int handle,int SpotID,int Mode);
    int DM_GetAreaTemp(int handle,int AreaID,int Mode);
//    开始红外数据采集，并将原始数据通过回调函数传出
//    long DM_RecvInfraredData(long lUserID, Pointer InfraDataCallback);
//    void DM_SetAllMessCallBack(Callback fMessCallBack);
//        设置仪器测温结果的返回速度
    int DM_SetUpdateMeaTemp(int handle, int Freq );
    //        获取仪器测温结果的返回速度
    int DM_GetUpdateMeaTemp(int handle);

//    从内存中采集原始数据，返回结果在WM_DM_CAPTURE_FRAME中处理
//    设置用于接受信息的回调函数
    int DM_CaptureInfraredFrame(int handle, String Path, int Frame, int Time);  //    开始原始数据采集，path中如果是路径那么按日期建立，如果是文件名，那么按照文件名建立
    int DM_CaptureInfraredFrameStop(int handle);                   //停止数据采集
    long DM_RecvInfraredData_EX(long lUserID, int Frame, int Time,Callback fInfraDataCallBack ); //    开始红外数据采集，并将原始数据通过回调函数传出
    int  DM_StopRecvInfraredData(long lRealHandle);
    void  DM_SetAllMessCallBack(Callback fMessCallBack);


//这里只能声明固定的callback回调函数

    class tagTempHandle extends Structure{
        int handle;
        int len;
    }
    class tagTemperature extends Structure{
        public int type;
        public int number;
        public int temper;
    }
    class tagTempMessage extends Structure{
        public int handle;
        public int len;
        public byte[] dvrIp = new byte[16];
        //        public tagTemperature[] temperInfo = new tagTemperature[32] ;
        public tagTemperature.ByValue[] temperInfo = new tagTemperature.ByValue[32];
    }
}
